home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-02-02 | 9.7 KB | 217 lines | [TEXT/GEOL] |
- Item 0951606 2-Feb-90 01:06PST
-
- From: MID France, Dev, MID,IDV
-
- To: CPLUS.APPLE$ C++ Interest List--Apple Employees
- CPLUS.DEV$ C++ Interest List--Developers
-
- Sub: Code generation (long)
-
- Hi C++ friend's,
-
- I have serious problem with the code generation using MPW C++ 3.1b1. And I hope
- very very hard that final release will resolve this. Today, with such code
- quality, my project is vain.
-
- Here is a sample :
-
- TSCGlobal::TSCGlobal(OSErr& result,
- long creatorID, short creatorIDType,
- SCSIRequestProc itsRequestProc,
- Ptr macDisk, long macDiskSize)
- {
- IVersionObject(creatorID, creatorIDType, kSCDriveVers);
- fRequestProc = itsRequestProc;
-
- fAnchor.anchUser = kUnitMgrSig;
- fAnchor.anchData = (long)this;
- if ((result = InsAnchor(&fAnchor)) == noErr) {
- TDiskDef* diskDef = (TDiskDef*)NewPtr(sizeof(TDiskDef) - 4096 + macDiskSize)
- if (diskDef) {
- DiskDefParam defParam;
-
- Debugger();
- BlockMove(macDisk, (Ptr)diskDef->GetDiskDefProc(), macDiskSize);
- defParam.fMessage = dsksOpen;
- if ((result = diskDef->SendMessage(&defParam)) == noErr) {
- diskDef->SetStorage(defParam.fStorage);
- fDiskDef.Insert(diskDef);
- }
- else
- delete diskDef;
- }
- else
- result = memFullErr;
- }
- if (result) {
- delete this;
- return;
- }
-
- }
-
- And here is the corresponding code :
-
- 00000000: 4E56 FFF4 'NV..' LINK A6,#$FFF4
- 00000004: 48E7 0118 'H...' MOVEM.L D7/A3/A4,-(A7)
- 00000008: 2E2E 0020 '... ' MOVE.L $0020(A6),D7
- 0000000C: 266E 0008 '&n..' MOVEA.L $0008(A6),A3
- 00000010: 200B ' .' MOVE.L A3,D0
- 00000012: 6612 'f.' BNE.S *+$0014 ;
- 00000026
- 00000014: 598F 'Y.' SUBQ.L #$4,A7
- 00000016: 7022 'p"' MOVEQ #$22,D0 ;
- 00000018: 2F00 '/.' MOVE.L D0,-(A7)
- 0000001A: 4EBA 0000 'N...' JSR NEWPTR ;
- 0000001E: 265F '&_' MOVEA.L (A7)+,A3
- 00000020: 200B ' .' MOVE.L A3,D0
- 00000022: 6700 0110 'g...' BEQ *+$0112 ;
- 00000134
- 00000026: 7000 'p.' MOVEQ #$00,D0
- 00000028: 2740 001A ''@..' MOVE.L D0,$001A(A3)
- 0000002C: 41EB 001A 'A...' LEA $001A(A3),A0
- 00000030: 2740 001E ''@..' MOVE.L D0,$001E(A3)
- 00000034: 41EB 001E 'A...' LEA $001E(A3),A0
- 00000038: 7201 'r.' MOVEQ #$01,D1
- 0000003A: 2F01 '/.' MOVE.L D1,-(A7)
- 0000003C: 342E 0016 '4...' MOVE.W $0016(A6),D2
- 00000040: 48C2 'H.' EXT.L D2
- 00000042: 2F02 '/.' MOVE.L D2,-(A7)
- 00000044: 2F2E 0010 '/...' MOVE.L $0010(A6),-(A7)
- 00000048: 2F0B '/.' MOVE.L A3,-(A7)
- 0000004A: 4EBA 0000 'N...' JSR
- IVersionObject__13VersionObjectFlsT2 ; id: 10
- 0000004E: 276E 0018 0016 ''n....' MOVE.L $0018(A6),$0016(A3)
- 00000054: 277C 7363 6472 ''|scdr' MOVE.L #$73636472,$000E(A3) ;
- 'scdr'
- 000E
- 0000005C: 274B 0012 ''K..' MOVE.L A3,$0012(A3)
- 00000060: 486B 000A 'Hk..' PEA $000A(A3)
- 00000064: 4EBA 0000 'N...' JSR InsAnchor__FP9anchorRec ;
- id: 18
- 00000068: 206E 000C ' n..' MOVEA.L $000C(A6),A0
- 0000006C: 3080 '0.' MOVE.W D0,(A0)
- 0000006E: 48C0 'H.' EXT.L D0
- 00000070: 4FEF 0014 'O...' LEA $0014(A7),A7
- 00000074: 6600 0098 'f...' BNE *+$009A ;
- 0000010E
- 00000078: 598F 'Y.' SUBQ.L #$4,A7
- 0000007A: 2007 ' .' MOVE.L D7,D0
- 0000007C: 720A 'r.' MOVEQ #$0A,D1
- 0000007E: D081 '..' ADD.L D1,D0
- 00000080: 2F00 '/.' MOVE.L D0,-(A7)
- 00000082: 4EBA 0000 'N...' JSR NEWPTR ;
- 00000086: 285F '(_' MOVEA.L (A7)+,A4
- 00000088: 200C ' .' MOVE.L A4,D0
- 0000008A: 677A 'gz' BEQ.S *+$007C ;
- 00000106
- 0000008C: A9FF '..' _Debugger ;
- 0000008E: 2F2E 001C '/...' MOVE.L $001C(A6),-(A7)
- 00000092: 486C 000A 'Hl..' PEA $000A(A4)
- 00000096: 2F07 '/.' MOVE.L D7,-(A7)
- 00000098: 4EBA 0000 'N...' JSR BLOCKMOVE ;
- 0000009C: 422E FFF6 'B...' CLR.B -$000A(A6)
- 000000A0: 486E FFF4 'Hn..' PEA -$000C(A6)
- 000000A4: 2F0C '/.' MOVE.L A4,-(A7)
- 000000A6: 4EBA 0000 'N...' JSR
- SendMessage__8TDiskDefFP12DiskDefParam ; id: 1
- 000000AA: 206E 000C ' n..' MOVEA.L $000C(A6),A0
- 000000AE: 3080 '0.' MOVE.W D0,(A0)
- 000000B0: 48C0 'H.' EXT.L D0
- 000000B2: 508F 'P.' ADDQ.L #$8,A7
- 000000B4: 6620 'f ' BNE.S *+$0022 ;
- 000000D6
- 000000B6: 296E FFFC 0006 ')n....' MOVE.L -$0004(A6),$0006(A4)
- 000000BC: 200C ' .' MOVE.L A4,D0
- 000000BE: 6706 'g.' BEQ.S *+$0008 ;
- 000000C6
- 000000C0: 200C ' .' MOVE.L A4,D0
- 000000C2: 5480 'T.' ADDQ.L #$2,D0
- 000000C4: 6002 '`.' BRA.S *+$0004 ;
- 000000C8
- 000000C6: 7000 'p.' MOVEQ #$00,D0
- 000000C8: 2F00 '/.' MOVE.L D0,-(A7)
- 000000CA: 486B 001E 'Hk..' PEA $001E(A3)
- 000000CE: 4EBA 0000 'N...' JSR
- Insert__10LinkedListFP12LinkedObject ; id: 9
- 000000D2: 508F 'P.' ADDQ.L #$8,A7
- 000000D4: 6038 '`8' BRA.S *+$003A ;
- 0000010E
-
- ; Here there is a serious problem with code generation.
- ; Following code is correct but totally unefficient !!!
-
- 000000D6: 200C ' .' MOVE.L A4,D0
- 000000D8: 6728 'g(' BEQ.S *+$002A ;
- 00000102
- 000000DA: 200C ' .' MOVE.L A4,D0
- 000000DC: 671E 'g.' BEQ.S *+$0020 ;
- 000000FC
- 000000DE: 200C ' .' MOVE.L A4,D0
- 000000E0: 670E 'g.' BEQ.S *+$0010 ;
- 000000F0
- 000000E2: 200C ' .' MOVE.L A4,D0
- 000000E4: 6704 'g.' BEQ.S *+$0006 ;
- 000000EA
-
- ; Problem again !
-
- 000000E6: 7000 'p.' MOVEQ #$00,D0
- 000000E8: 6002 '`.' BRA.S *+$0004 ;
- 000000EC
- 000000EA: 7000 'p.' MOVEQ #$00,D0
- 000000EC: 7000 'p.' MOVEQ #$00,D0
- 000000EE: 6002 '`.' BRA.S *+$0004 ;
- 000000F2
- 000000F0: 7000 'p.' MOVEQ #$00,D0
- 000000F2: 2F0C '/.' MOVE.L A4,-(A7)
- 000000F4: 4EBA 0000 'N...' JSR DISPOSPTR ;
- 000000F8: 7000 'p.' MOVEQ #$00,D0
- 000000FA: 6002 '`.' BRA.S *+$0004 ;
- 000000FE
- 000000FC: 7000 'p.' MOVEQ #$00,D0
- 000000FE: 7000 'p.' MOVEQ #$00,D0
- 00000100: 600C '`.' BRA.S *+$000E ;
- 0000010E
- 00000102: 7000 'p.' MOVEQ #$00,D0
- 00000104: 6008 '`.' BRA.S *+$000A ;
- 0000010E
- 00000106: 206E 000C ' n..' MOVEA.L $000C(A6),A0
- 0000010A: 30BC FF94 '0...' MOVE.W #$FF94,(A0)
- 0000010E: 206E 000C ' n..' MOVEA.L $000C(A6),A0
- 00000112: 4A50 'JP' TST.W (A0)
- 00000114: 671E 'g.' BEQ.S *+$0020 ;
- 00000134
- 00000116: 200B ' .' MOVE.L A3,D0
- 00000118: 6714 'g.' BEQ.S *+$0016 ;
- 0000012E
- 0000011A: 200B ' .' MOVE.L A3,D0
- 0000011C: 670A 'g.' BEQ.S *+$000C ;
- 00000128
- 0000011E: 2F0B '/.' MOVE.L A3,-(A7)
- 00000120: 4EBA 0000 'N...' JSR DISPOSPTR ;
-
- ; Always the same problem !
-
- 00000124: 7000 'p.' MOVEQ #$00,D0
- 00000126: 6002 '`.' BRA.S *+$0004 ;
- 0000012A
- 00000128: 7000 'p.' MOVEQ #$00,D0
- 0000012A: 7000 'p.' MOVEQ #$00,D0
- 0000012C: 6002 '`.' BRA.S *+$0004 ;
- 00000130
- 0000012E: 7000 'p.' MOVEQ #$00,D0
- 00000130: 200B ' .' MOVE.L A3,D0
- 00000132: 6002 '`.' BRA.S *+$0004 ;
- 00000136
- 00000134: 200B ' .' MOVE.L A3,D0
- 00000136: 4CEE 1880 FFE8 'L.....' MOVEM.L -$0018(A6),D7/A3/A4
- 0000013C: 4E5E 'N^' UNLK A6
- 0000013E: 4E75 'Nu' RTS
-
- What is the "right C++ writing style" for an efficient code ? I think that my
- C++ speaking is as bad as my English speaking !!!
-
- Etienne Vautherin
-
-